rails将参数从一个控制器更新到另一个控制器

时间:2014-01-23 20:20:57

标签: ruby-on-rails ruby-on-rails-4

我有3个表,分别是电影院,用户,user_views,cinema_ratings,个人资料

所以我的user_views表有:user_id和cinema_id

我想做的是 在我的cinema_ratings控制器中,我想更新,创建和删除我的user_views表。

我想写像

 if current_user has not done cinema_ratings ?
  if current_user_id is present in user_views[user_id]?
   #do some thing
  else
     update user_id in user_views 
  else
    delete user_id and cinema_id in user views
    redirect to actual cinemas page
#do some thing

端 端

这是我想做的,但我不知道如何调用user_views表来更新,读取和删除此控制器。

任何人都可以告诉我如何做到这一点。

1 个答案:

答案 0 :(得分:0)

我将表格更新放在User模型中。

def view! (cinema)
  self.user_views.create!(cinema_id: cinema.id)
end

然后在您的控制器中,无论您需要呼叫它,只需拨打@user.view!(@cinema)

即可

通常,只要您处理数据库,就要将该逻辑保留在模型中。 “fat models, lean controllers”有一些标准。

希望这有帮助!

修改

所以......对于那些if语句,你的语法已经过时了......但我会尝试。

您也可以将这些检查放在模型中。我经常这样做。所以:

def viewed? (cinema)
  !self.user_views.where(id: cinema.id).empty?
end

然后,您可以检查用户是否使用@user.viewed?(@cinema)在某个电影院观看过电影。这将是你的条件的一部分。

所有这一切以及你的问题的想法:

  

这是我想做的,但我不知道如何调用user_views表来更新,读取和删除此控制器。

在模型上放置方法,并从控制器中调用它们。