可能这很容易让我无法想象:-)但这些例子会引发错误
我试图将实例属性的值设置为等于关联记录的属性值。
案例1 - 对于注释模型,业务合作伙伴具有belongs_to关系(sender_id
),我想分配业务伙伴的字段language
的值到Annotation的字段locale_language
,其中business_partner_id等于Annotation的sender_id,我尝试了这个:
def set_field_values
self.locale_language = BusinessPartner.language.where(business_partner_id => self.sender_id) unless self.locale_language.present?
end
和案例2 涉及3个模型:Document,Documentttype和Annotation。我想将documenttype_id
Annotation
的值分配给documenttype_id
的{{1}}字段。注释的范围是活动的。
Document
怎么做?
对于案例1,错误是NoMethodError。
案例2的AnnotationsController中的NoMethodError #create 未定义的方法`语言'对于#
DocumentsController中的NoMethodError#创建未定义的方法 `documenttype_id'对于#
答案 0 :(得分:0)
如果出现第一个错误,请尝试:
self.locale_language = Language.where(business_partner_id: self.sender_id) unless self.locale_language.present?
假设business_partner_id与语言模型
相关联答案 1 :(得分:0)
为此,我能够使用一种方法来实现它,首先我查找相关记录,然后使用.select
或.take来获取字段或记录。例如:
self.documenttype ||= Documenttype.active.default.take
假设默认值仅对1条记录为真 - 可通过以下方式实现:
validates_uniqueness_of :default, if: :default?, message: "Another document type is set as default"
它可以这样工作......
self.language = BusinessPartner.where(:business_partner_id => self.sender_id).select("language") unless self.language.present?