加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby on Rails:如何建模“用户最喜欢的模型”

发布时间:2020-12-17 01:28:35 所属栏目:百科 来源:网络整理
导读:我将使用StackOverflow作为我的例子.假设我有一个问题模型.登录用户可以“标记”问题以标记为他们的最爱之一.在数据库中,这种事情可能会存储在UserQuestions表中,其中包含user_id字段和question_id字段.这种功能不是典型的CRUD,因为实际上只有“list”,“add
我将使用StackOverflow作为我的例子.假设我有一个问题模型.登录用户可以“标记”问题以标记为他们的最爱之一.在数据库中,这种事情可能会存储在UserQuestions表中,其中包含user_id字段和question_id字段.这种功能不是典型的CRUD,因为实际上只有“list”,“add”和“delete”. “用户加星标的问题”列表中显示的记录也应该不是UserQuestion记录,而是问题记录.我在控制器和UserQuestion模型中放了什么代码?

class MyFavoriteQuestionsController < ApplicationController

  def index
    #list just the questions associated with current_user
  end

  def add
    #insert a row in the database for current_user and selected question
  def

  def remove
    #remove the row from the database
  end
end

解决方法

如果你坚持惯例,我会说这是典型的问题.添加是创建,删除是销毁.

class FavouritesController < ApplicationController

  before_filter :find_user

  def index
    @favourites = @user.favourites
  end

  def create
    @question = Question.find params[:id]
    @user.favourites << @question
  def

  def destroy
    @favourite = @user.favourites.find_by_question_id params[:id]
    @favourite.destroy unless @favourite.blank?
  end
end


#routes.rb

resources :users do
  resources :favourites,:only => [:index,:create,:destroy]
end

#user.rb

has_many :user_favourites,:dependent => :destroy
has_many :favourites,:through => :user_favourites,:source => :question

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读