你好,我試圖將方法self.liked_by(user)
轉換成一個範圍。我不完全確定我的導師要求什麼,所以對這個問題的任何解釋都非常感激。如何將方法轉換爲範圍。
這是有問題的方法,我應該把它變成一個範圍。
def self.liked_by(user)
joins(:likes).where(likes: { user_id: user.id })
end
這是那裏的方法出現在模型中
class Bookmark < ActiveRecord::Base
belongs_to :user
belongs_to :topic
has_many :likes, dependent: :destroy
before_validation :httpset
validates :url, format: { with: /\Ahttp:\/\/.*(com|org|net|gov)/i,
message: "only allows valid URLs." }
def self.liked_by(user)
joins(:likes).where(likes: { user_id: user.id })
end
def httpset
if self.url =~ /\Ahttp:\/\/|\Ahttps:\/\//i
else
if self.url.present?
self.url = "http://"+ self.url
else
self.url = nil
end
end
end
end
而這正是該方法在控制器稱爲
class UsersController < ApplicationController
def show
user = User.find(params[:id])
@bookmarks = user.bookmarks
@liked_bookmarks = Bookmark.liked_by(user)
end
end
感謝您看我的問題,有一個美好的一天。
使用(用戶{或任何名稱)來訪問沒有直接給出答案了......請參閱http ://guides.rubyonrails.org/active_record_querying.html#scopes – Owen
以下是關於使用範圍與類方法之間的細微區別的較早但很棒的文章:http://blog.plataformatec.com.br/2013/ 02 /有源記錄範圍-VS-類方法/ – trueunlessfalse