我有以下装置。
users.yml
first_user:
name: User1
password_hash: <%= BCrypt::Engine.hash_secret('password', '$2a$10$xKPXy2QabH6ThBjo7gNB8O') %>
password_salt: $2a$10$xKPXy2QabH6ThBjo7gNB8O
role: 1
stores.yml
one:
name: MyFirstString
user_id: <%= ActiveRecord::FixtureSet.identify(:first_user) %>
但是,当我加载Store.first.user_id
时,我的值为979462526
而User.first.id
为980190962
。我认为这些价值观不应该有所不同。如果有的话,请纠正我的理解或指出我的代码中的错误。模型结构是:用户有很多商店。
答案 0 :(得分:1)
我认为ActiveRecord::FixtureSet.identify(:first_user)
与first_user
灯具本身无关
请参阅source code。
根据评论,它只生成给定标签的标识符。在你的情况下,它是:first_user
。
所以你可以打开rails console
并手动完成
Zlib.crc32('first_user') % (2 ** 30 - 1)
# => 979462526
你会获得相同的数字。
所以它与任何特定的灯具无关(因为我没有任何灯具)。
<强>更新强>
也许您应该尝试使用关联而不是直接链接ID。
# users.yml
first_user:
name: User1
...
# stores.yml
one:
name: MyFirstString
user: first_user
这样我希望它应该像预期的那样工作。