我需要这样做:
class PlanetEdge < ActiveRecord::Base
enum :first_planet [ :earth, :mars, :jupiter]
enum :second_planet [ :earth, :mars, :jupiter]
end
其中,我的表是一个边表,但每个顶点都是一个整数。
然而,在rails中,abvove似乎是不可能的。制作字符串列的替代方法是什么?
最佳答案
也许它可以把地球作为另一个模型?
class Planet < ActiveRecord::Base
enum type: %w(earth mars jupiter)
end
class PlanetEdge < ActiveRecord::Base
belongs_to :first_planet, class_name: 'Planet'
belongs_to :second_planet, class_name: 'Planet'
end
您可以使用
accepts_nested_attributes_for
创建Plantedge:class PlanetEdge < ActiveRecord::Base
belongs_to :first_planet, class_name: 'Planet'
belongs_to :second_planet, class_name: 'Planet'
accepts_nested_attributes_for :first_planet
accepts_nested_attributes_for :second_planet
end
PlanetEdge.create(
first_planet_attributes: { type: 'mars' },
second_planet_attributes: { type: 'jupiter' }
)