Fou*_*usa 30 ruby activerecord delegates ruby-on-rails
是否可以在Active Record模型中使用委托并使用类似的条件:if
?
class User < ApplicationRecord
delegate :company, :to => :master, :if => :has_master?
belongs_to :master, :class_name => "User"
def has_master?
master.present?
end
end
Run Code Online (Sandbox Code Playgroud)
Sim*_*tti 36
不,你不能,但:allow_nil => true
如果主人是零,你可以通过选项返回nil.
class User < ActiveRecord::Base
delegate :company, :to => :master, :allow_nil => true
# ...
end
user.master = nil
user.company
# => nil
user.master = <#User ...>
user.company
# => ...
Run Code Online (Sandbox Code Playgroud)
否则,您需要编写自己的自定义方法,而不是使用委托宏来获得更复杂的选项.
class User < ActiveRecord::Base
# ...
def company
master.company if has_master?
end
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10893 次 |
最近记录: |