我有一個用戶模型和一個ArtworkIteration模型。用戶可以創建ArtworkIterations。ActiveRecord協會只在控制檯工作
我的用戶模型有很多artwork_iterations
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :artwork_iterations
end
而且我artwork_iterations belongs_to的用戶
class ArtworkIteration < ActiveRecord::Base
belongs_to :user
end
這裏的它增加了USER_ID外鍵我artwork_iteration模型遷移
class AddUserIdToArtworkIterations < ActiveRecord::Migration
def change
add_column :artwork_iterations, :user_id, :integer
add_index :artwork_iterations, :user_id
end
end
當我在rails控制檯中創建一個artwork_iteration時,它的作用是:
> @art = ArtworkIteration.create(user_id: User.last.id)
> @art.user
# Successfully returns the last user
但是當我通過我的網站創建一個artwork_iteration登錄時,artwork_iteration.user爲null。
爲了解決這個問題我已經添加了一個隱藏字段我的表格:
<%= f.hidden_field :user_id, value: "#{current_user.id}" %>
但這似乎哈克,是非常不安全的。 (任何用戶都可以檢查元素並更改此值,使他們可以以不同用戶的身份創建artwork_iterations)。
謝謝!爲此,使用devise的current_user.id結束。我目前在artwork_iterations.create後面設置了id值 – 2014-10-30 06:47:57