當用戶喜歡評論create_notification
被觸發在commet_like.rb:如何將模型與模型中的模型相關聯?
class CommentLike < ActiveRecord::Base
after_create :create_notification
has_many :notifications
belongs_to :user
belongs_to :comment
validates :user, uniqueness: { scope: :comment }
belongs_to :liker, class_name: 'User', foreign_key: :user_id
belongs_to :liked_comment, class_name: 'Comment', foreign_key: :comment_id
private
def create_notification
notifications.create(
comment_like: self,
comment: comment,
user: comment.user,
read: false
)
end
end
我試圖讓這樣的事情在通知指數工作:
<% if notification.comment_like_id %>
<% if notification.goal_id %>
liked <%= link_to "your comment", notification_goal_path(notification, notification.goal_id) %>
<% elsif notification.habit_id %>
liked <%= link_to "your comment", notification_habit_path(notification, notification.habit_id) %>
<% elsif notification.quantified_id %>
liked <%= link_to "your comment", notification_quantified_path(notification, notification.quantified_id) %>
<% elsif notification.valuation_id %>
liked <%= link_to "your comment", notification_valuation_path(notification, notification.valuation_id) %>
<% end %>
<% end %>
但問題是這些條件中的每一條都不可用於評論,因此通知顯示爲空白。
正如你在這裏雖然可以看到CommentLike與評論相關聯,在本例中給出comment_id: 1
和comment_id: 1
有valuation_id: 1
。
[1] CommentLike.find(1)
id: 1,
user_id: 1,
comment_id: 1,
[2] Comment.find(1)
id: 1,
content: "test",
goal_id: nil,
habit_id: nil,
valuation_id: 1,
quantified_id: nil,
commentable_id: nil,
commentable_type: nil,
user_id: 1,
likes: 1>
我們如何利用這個協會根據意見與其他4款協會做出正確的條件現身comment_like_id
下?
notifications_controller
def index
@notifications = current_user.notifications
@notifications.each do |notification|
notification.update_attribute(:read, true)
end
end
comment.rb
class Comment < ActiveRecord::Base
after_create :create_notification
has_many :notifications
has_many :comment_likes
has_many :likers, through: :comment_likes, class_name: 'User', source: :liker
belongs_to :habit
belongs_to :quantified
belongs_to :valuation
belongs_to :goal
belongs_to :user
private
def create_notification
author =
if goal
goal.user
elsif habit
habit.user
elsif quantified
quantified.user
elsif valuation
valuation.user
end
notifications.create(
comment: self,
habit: habit,
quantified: quantified,
goal: goal,
valuation: valuation,
user: author,
read: false
)
end
end
請讓我知道如果你需要進一步的解釋或代碼: - ]
怎麼來評論通過相關聯的所有其他車型代替commentable(它看起來像你有該領域,但不是協會) – DVG