Ruby on rails 为什么在引用rails中的装置时id值会更改

Ruby on rails 为什么在引用rails中的装置时id值会更改,ruby-on-rails,ruby,fixtures,Ruby On Rails,Ruby,Fixtures,我有以下固定装置 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

我有以下固定装置

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) %>
users.yml
第一个用户:
姓名:User1
密码\u散列:
密码:2a$10$xKPXy2QabH6ThBjo7gNB8O
角色:1
商店
一:
姓名:MyFirstString
用户id:

但是,当我加载
Store.first.user_id
时,我得到的值是
979462526
,而
user.first.id
980190962
。我认为这些价值观不应该有所不同。请更正我的理解或指出我的代码中的错误(如果有)。模型结构是:一个用户有很多商店。

我认为
ActiveRecord::FixtureSet.identification(:first\u user)
first\u user
夹具本身无关。

根据注释,它只生成给定标签的标识符。在您的情况下,它是
:first\u user

因此,您只需打开
rails控制台
并手动操作即可

Zlib.crc32('first_user') % (2 ** 30 - 1) 
# => 979462526
您将得到相同的号码。
所以它与任何特定的固定装置无关(因为我没有任何固定装置)

更新

也许您应该尝试使用关联,而不是直接链接ID

# users.yml
first_user:
  name: User1
  ...

# stores.yml
one:
  name: MyFirstString
  user: first_user

这样,我希望它能像预期的那样工作。

很明显,这等于979462526。很有趣。谢谢你的解释。其思想是在stores.yml中引用用户对象的id值。你知道怎么做吗?我通常不使用固定装置,给我点时间检查一下。当然。如果你能加上这一点,那将非常有帮助。你读过这个吗?关联的节标签引用(属于、有一个、有多个)。我会更新我的答案,不确定它是否有效,但你可以试试