这个 gem 存在吗?
Does this gem exist?
我目前需要在数据库中存储一个id,表示特定常量数组中的索引。我一直在使用这样的方法,由一个问题产生。
class Foo
ARY = [ :a :b, :c ]
def bar
return ARY[self.bar_id]
end
def bar=(value)
return self.bar_id=ARY.index(value)
end
scope :a, -> { where(:bar_id => ARY.index(:a)) }
scope :b, -> { where(:bar_id => ARY.index(:b)) }
scope :c, -> { where(:bar_id => ARY.index(:c)) }
def a?
return bar == :a
end
def b?
return bar == :b
end
def c?
return bar == :c
end
end
gem 这样做吗?
随着 simple_enum gem 你的 class 变成
class Foo < ActiveRecord::Base
as_enum :bar, [:a, :b, :c], source: :bar_id
end
ActiveRecord 内置了对此的支持。 http://api.rubyonrails.org/classes/ActiveRecord/Enum.html
我目前需要在数据库中存储一个id,表示特定常量数组中的索引。我一直在使用这样的方法,由一个问题产生。
class Foo
ARY = [ :a :b, :c ]
def bar
return ARY[self.bar_id]
end
def bar=(value)
return self.bar_id=ARY.index(value)
end
scope :a, -> { where(:bar_id => ARY.index(:a)) }
scope :b, -> { where(:bar_id => ARY.index(:b)) }
scope :c, -> { where(:bar_id => ARY.index(:c)) }
def a?
return bar == :a
end
def b?
return bar == :b
end
def c?
return bar == :c
end
end
gem 这样做吗?
随着 simple_enum gem 你的 class 变成
class Foo < ActiveRecord::Base
as_enum :bar, [:a, :b, :c], source: :bar_id
end
ActiveRecord 内置了对此的支持。 http://api.rubyonrails.org/classes/ActiveRecord/Enum.html