我不知道为什么,但由于某种原因,我的嵌套关联没有得到rails的尊重。
我的学生班有嵌套关联:地址,考试
地址关联正常。测试关联与地址关联相同,不起作用。虽然我可以成功创建和编辑测试实例,但它们不会经过模型中定义的验证检查,也不会实现我在模型中指定的搜索范围搜索功能。
以下是学生模型:
class Student < ActiveRecord::Base
unloadable
validates :name, presence: true, length: {maximum: 50}
has_many :addresses, :dependent => :destroy
has_many :tests, :dependent => :destroy
accepts_nested_attributes_for :addresses,
:reject_if => :all_blank,
:allow_destroy => true
accepts_nested_attributes_for :tests,
:reject_if => :all_blank,
:allow_destroy => true
end
这是地址模型(有效):
class Address < ActiveRecord::Base
belongs_to :student
validates :address, presence: true, length: {maximum: 80}
def self.ransackable_attributes(auth_object = nil)
['county', 'zip', 'address']
end
end
这是(基本上)相同的测试模型(不起作用):
class Test < ActiveRecord::Base
belongs_to :student
validates :name, length: {maximum: 40}
def self.ransackable_attributes(auth_object = nil)
['score', 'date']
end
end
它完全忽略了验证以及ransack功能。虽然一切都运行没有错误,但我能够输入我想要的任何内容,即使它已经过了有效的长度,并且它不会抛出任何错误消息。
我觉得我没有正确地创建我的模型或其他东西,Rails不知道它在那里?
答案 0 :(得分:0)
Test
,我相信是minitest
框架中的模块。避免命名模型Test
。事实上,test
是Rails中的保留关键字。尝试重命名模型的名称并重试。