У меня есть вопрос с моими нынешними ассоциациями активных записей.Ассоциация активных записей одна для многих
Я создаю систему комментирования, основанную на вопросе (очень похожа на stackoverflow).
Я смотрю ассоциацию, и у пользователя много комментариев, а комментарий принадлежит пользователю.
Теперь, когда я делаю фактический комментарий, user_id должен быть включен в поле user_id моего комментария, так как я делаю ассоциацию, правильно?
Вот моя схема:
create_table "users", force: true do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.integer "question_id", limit: 255
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
t.string "provider"
t.string "uid"
t.string "name"
end
create_table "comments", force: true do |t|
t.integer "user_id" **THIS IS WHERE I AM EXPECTING A JOIN AND WHEN A USER MAKES A COMMENT TO HAVE THE USER_ID NUMBER STORED HERE
t.integer "question_id"
t.text "comment"
t.integer "upvotes"
t.datetime "created_at"
t.datetime "updated_at"
end
Вот мои Active Record ассоциации:
USER.RB:
class User < ActiveRecord::Base
has_many :questions
has_many :comments
has_many :votes
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable, :omniauthable,
:recoverable, :rememberable, :trackable, :validatable
def self.from_omniauth(auth)
where(auth.slice(:provider, :uid)).first_or_create do |user|
user.provider = auth.provider
user.uid = auth.uid
# user.username = auth.info.nickname
user.email = auth.info.email
user.name = auth.info.name
end
end
def self.new_with_session(params, session)
if session["devise.user_attributes"]
new(session["devise.user_attributes"], without_protection: true) do |user|
user.attributes = params
user.valid?
end
else
super
end
end
def password_required?
super && provider.blank?
end
def update_with_password(params, *options)
if encrypted_password.blank?
update_attributes(params, *options)
else
super
end
end
end
Comment.rb:
class Comment < ActiveRecord::Base
belongs_to :question
belongs_to :user
has_many :votes
end
Мои Конечная цель состоит в том, чтобы mments для регистрации user_id при создании нового комментария, связывая комментарий с пользователем.
Сейчас мой user_id является «ноль»
** Это рельсы бэкенд на Backbone фронтэнде
Вы не разделили контекст (например, с кодом и выводом), где 'user_id' является' nil', поэтому трудно ответить на этот вопрос. –
Извините Peter, это то, что вы ищете, это обычный запрос из моей консоли rails, это то, что Comment.last возвращает # <Комментарий id: 95, user_id: nil, question_id: 260, comment: «TEST22», upvotes: 0, created_at: "2013-12-07 20:19:03", updated_at: "2013-12-07 20:19:03"> – HelloWorld
Хорошо, это объясняет, как вы его просматриваете, но все равно остается открытым вопрос о том, как вы его создали. Помог ли мой ответ? –