我有一个模型(讨论),它包含另一个模型(可见性)。需要在before_validation :on => :create
上设置值的 Discussion 模型visibility
,即:
class Discussion
has_one :visibility
validates_presence_of :some_unrelated_field
before_validation :set_visibility_relationship, :on => :create
private
def set_visibility_relationship
visibility.some_entity = self.the_same_entity
end
end
然后我有以下内容discussion_spec.rb
:
it { should validate_presence_of(:some_unrelated_field) }
before_validation 抛出错误:
Failure/Error: it { should validate_presence_of :some_unrelated_field }
NoMethodError:
undefined method `visibility.some_entity' for #<Discussion:0x007ff6ebc43170>
如果我注释掉before_validation
调用或should validate_presence_of
无关字段的注释,我的所有测试都会通过。
我尝试使用 pry 逐步完成,我发现在讨论中设置的错误键之一是“visibility.some_entity”,而所有其他键都是基于属性的,例如:“some_unrelated_field”。似乎 rspec 中可能存在一些错误导致抛出此错误,但我也可能做错了什么。