And*_*rew 3 ruby-on-rails rails-models
我将使用StackOverflow作为我的例子.假设我有一个Question模型.登录用户可以" Question标记"a 标记为他们的最爱之一.在数据库中,这种东西可能存储在UserQuestions带有user_id字段和question_id字段的表中.这种功能不是典型的CRUD,因为实际上只有"list","add"和"delete"."用户加星标的问题"列表中显示的记录也不应是UserQuestion记录,而应是Question记录.我在控制器和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
Run Code Online (Sandbox Code Playgroud)
如果你坚持惯例,我会说这是典型的问题.添加是创建,删除是销毁.
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1755 次 |
| 最近记录: |