2015-01-02 4 views
0

Я использую action_as_commentable_with_threading gem с моим приложением Rails 4.0.actions_as_commentable_with_threading gem не работает, когда я использую помощник build_from в моем приложении Rails.

У меня есть контроллер Извещение:

class Notification < ActiveRecord::Base 
    acts_as_commentable 
    # ...... 
end 

Теперь с помощью build_from создать комментарий не работает:

>> n = Notification.last 
    Notification Load (2.3ms) SELECT "notifications".* FROM "notifications" ORDER BY "notifications"."id" DESC LIMIT 1 
=> #<Notification id: 134, owner_id: 223, sender_id: 247, n_type: "SAVED_SEARCH", url: nil, content: "2219", read: false, created_at: "2015-01-02 19:52:54", updated_at: "2015-01-02 19:52:54", archived: false, short_url: "http://www.some_url.com"> 
>> u = User.last 
    User Load (1.3ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1 
=> #<User id: 252, email: "[email protected]", encrypted_password: "$2a$1...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, first_name: "eqbalosss", last_name: nil, created_at: "2015-01-01 20:16:52", updated_at: "2015-01-01 20:16:52", provider: nil, uid: nil> 
>> Comment.build_from(n, u.id, "test") 
=> #<Comment id: nil, commentable_id: 134, commentable_type: "Notification", title: nil, body: "test", subject: nil, user_id: 252, parent_id: nil, lft: nil, rgt: nil, created_at: nil, updated_at: nil> 
>> Comment.count 
    (1.0ms) SELECT COUNT(*) FROM "comments" 
=> 0 

Я проверил документацию, и я понятия не имею, что я делаю неправильно? есть ли у меня связь между комментарием и уведомлением? Я предполагаю, что этот камень будет делать это уже.

Любая помощь будет оценена по достоинству.

+0

Хорошо, мне кажется, что мне нужно сохранить результаты в экземпляре и сэкономить! Это. –

ответ

1

Когда вы используете build_from, когда на самом деле не сохраняете комментарий в базе данных; вместо этого вы просто строите его на основе вашей модели User.

Итак, когда вы выполняете Comment.count, вы запрашиваете свою базу данных, и поскольку комментарий не был сохранен, он возвращает нулевые результаты.

Вы должны позвонить либо comment.save, либо comment.save! после его создания, чтобы сохранить его в базе данных.

Надеюсь, это поможет

+0

Я только что заметил это. Спасибо за помощь. –

+0

Ох! Теперь я видел, что ты уже решил это. Жаль, что я не был достаточно быстрым :( –

+0

Не удалось решить, вы помогли уже спать;) Cheers –

 Смежные вопросы

  • Нет связанных вопросов^_^