我在用户和组织之间有关系:
User migration file: t.references :organization, index: true, foreign_key: true
t.string :xml_file, null: false
User model file: belongs_to :organization
Organization model file: has_one :user
用户模型包含一个变量xml_file
,它是一个存储在某处的文件(尚未编写该控制器方法)。我正在尝试编写集成测试:
def setup
emptymap = fixture_file_upload('test/fixtures/empty.xml', 'application/xml', :binary) # I have uploaded this file in the fixtures directory.
@organization = organizations(:one) # Which is in the organizations fixtures file.
@user = @organization.users.build(xml_file: emptymap)
end
test "should be valid" do
assert @user.valid?
end
这会产生错误(指测试中的@user
行):
NoMethodError: undefined method `users' for #<Organization:0x00000008a41d18>
如果我将def setup
中的@user行更改为@user = @organization.user.build(xml_file: emptymap)
,则会生成错误消息:NoMethodError: undefined method
build'for nil:NilClass`。所以这似乎也不是。
知道我在这里做错了吗?
答案 0 :(得分:1)
sudo chown -R (whoami) /usr/local
因为你使用它只适用于集合。由于您在build
User
并且在belongs_to :organization
中有一个:user`您没有集合,因此您具有一对一的关系。
所以正确的属性是Organization
并且有一种特殊的一对一关系格式...... @organization.user
build_(something)
答案 1 :(得分:0)
检查字符串xml_file以查看what.it包含的内容。你有一个上传者吗?