Tôi đang thực hành Ruby on Rails bằng cách tạo một ứng dụng đơn giản, nơi người dùng có thể đăng ký (sử dụng Devise) và đăng các bài viết.Làm thế nào để vượt qua current_user của Devise như user_id?
Sau khi cài đặt lập mưu, tôi đi trước và tạo ra một giàn giáo cho các bài viết
rails g scaffold article title:string article:text user_id:integer
Sau đó, tôi tạo ra bộ điều khiển sử dụng lập mưu
rails generate devise User
điều khiển Bài viết của tôi:
class Article < ActiveRecord::Base
belongs_to :user
end
Trình điều khiển người dùng của tôi:
class User < ActiveRecord::Base
has_many :articles
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
end
Bây giờ câu hỏi của tôi là: làm thế nào để bạn làm cho nó để user_id trong http://localhost:3000/articles/new/ là current_user.id tự động?
Ngoài ra, trong http://localhost:3000/articles/ người dùng chỉ có thể xem các bài viết được liên kết với user_id của họ, chứ không phải bất kỳ elses nào. Những gì thay đổi để điều khiển bài viết tôi nên thực hiện để làm điều này?
Đây là lần đầu tiên tôi đăng bài ở đây tại Stack Overflow và trợ giúp của bạn sẽ được đánh giá cao .. Cảm ơn bạn!
EDIT tìm thấy giải pháp cho câu hỏi đầu tiên, để tham khảo trong tương lai.
tôi đặt
<%= f.hidden_field :user_id %>
trong _form.html.erb, và
def create
@article.user_id = current_user.id
...
end
để điều khiển bài viết của tôi. Đây là thành công vượt qua current_user.id như user_id của bài viết một cách hoàn hảo.
Vui lòng cụ thể hơn. Bạn có ý nghĩa rất ít. – clyfe
Tôi nghĩ rằng tôi đã giải thích nó cũng như tôi có thể .. nhưng ok, TL; dr -> bảng bài viết có 3 trường (tiêu đề, bài viết và user_id). Tôi hỏi làm thế nào user_id trong form tạo có thể = current_user.id từ Devise. – cdotfeli