我希望创建一个名为ignorables
的表ignorable_type
和ignorable_id
,我可以在UI中存储我想忽略的不同类型对象的ID。
如何利用ActiveRecord的多态关联来实现这一目标?
答案 0 :(得分:1)
我不得不说我不会100%得到你的问题,但这将是我的看法
1)您需要创建表格。我相信你知道怎么做,但这就是
rails g migration CreateIgnores
#db/migrate/20180106072916_create_ignorables.rb
class CreateIgnors < ActiveRecord::Migration[5.0]
def change
create_table :ignors do |t|
t.integer :ignorable_id
t.string :ignorable_type
...
end
add_index :ignors, [:ignorable_type, :ignorable_id]
end
end
2)现在您可以创建模型
class Ignore < ApplicationRecord
belongs_to :ignorable, polymorphic: true
end
3)什么属于可忽略的
class Other < ApplicationRecord
has_many :ignored, as: :ignorable
end
4)现在最后但不是列表你想做点什么
class Other < ApplicationRecord
has_many :ignored, as: :ignorable
validate :belongs_to_ignored
...
private
def belongs_to_ignored
if ignored
false
end
end
end
我希望这可以引导你朝着正确的方向前进