我想在我的項目中使用seed.rb文件插入一些默認用戶。我已經執行以下行控制檯:如何調試seeds.rb文件?
rake db:seed
和被掀翻沒有錯誤,但沒有任何創建的記錄。當我將代碼粘貼到rails控制檯時,再次顯示沒有錯誤。我猜測我在seed.rb文件中做錯了。
這是怎麼我的模型是相關的:
security_user.rb
has_one :security_users_detail, dependent: :destroy
has_many :security_users_manage_securities
has_many :security_users_roles, through: :security_users_manage_securities
security_users_detail.rb
belongs_to :security_user
security_users_role.rb
has_many :security_users_manage_securities
has_many :security_users, through: :security_users_manage_securities
這是我在我的seed.rb文件中的代碼:
users = {
Admin: {
Information: {
email: '[email protected]',
password: 'test',
password_confirmation: 'test'
},
Details: {
address: 'Not defined.',
city: 'Not defined.',
country: 'Not defined.',
egn: '0000000000',
faculty_number: '',
first_name: 'Admin',
gender: 'male',
gsm: '0000000000',
last_name: 'Not defined.',
skype: 'Not defined.'
},
Roles: %w(Administrator)
}
}
users.each do |user, data|
security_user = SecurityUser.new(data[:Information])
data[:Roles].each { |role|
security_user.security_users_manage_securities.build(security_users_role: SecurityUsersRole.find_by_role(role))
}
SecurityUser.where(email: security_user.email).first_or_create!(security_user.attributes)
security_users_detail = SecurityUsersDetail.new(data[:Details])
security_users_detail.security_user_id = security_user.id
SecurityUsersDetail.where(security_user_id: security_users_detail.security_user_id).first_or_create
end
此外,以幫助你解決問題,它看起來像你調用'new'但從來沒有'save'。 – IAmNaN
是的,我打電話給first_or_create,如果找不到,它將創建一條記錄。如果我在rails控制檯中執行了所有的代碼,將會插入數據庫中的記錄嗎? – gotqn
如果我明白你想要做什麼,我認爲你在'security_user = SecurityUser.new(data [:Information])'中有一個錯誤。數據[:信息]。呈現?是真的嗎? (嘗試使用'puts'。)如果不是,你可能需要'data [:Admin] [:Information]'。 – IAmNaN