Ida*_*rye 7 ruby activerecord ruby-on-rails associations
我有两个ActiveRecord模型:
class Foo < ActiveRecord::Base
has_many :bars,:dependent=>:destroy
end
class Bar < ActiveRecord::Base
belongs_to :foo
end
Run Code Online (Sandbox Code Playgroud)
我的设计要求Bar需要与数据库依赖关联Foo,但Foo仅与Bar数据库依赖关联- 以确保Foo删除实例时,所有关联的实例Bar也将被删除.除此之外,使用的代码Foo不应该知道Bar,我不希望可以从Foo对象访问关联方法.
我已经尝试在声明private之前has_many声明Foo,但它不起作用(我猜它只适用于直接用def... 声明的方法).
有没有办法使关联私有,或实现数据库依赖而不创建Bar关联Foo?
And*_*all 13
您必须在调用后放置private声明,因为直到那时才定义关联的方法:has_many
class Foo < ActiveRecord::Base
has_many :bars, :dependent => :destroy
private :bars, :bars=
end
Foo.first.bars
#=> #<NoMethodError: private method `registrations' called for #<Foo:0x007fc767adca88>>
Run Code Online (Sandbox Code Playgroud)