Tag: 模型

Rails 4 before_update条件对单个列的SQL开销

我的rails应用程序中有一个Player模型。 我正在评估的2列是最高级别和最高分数。 这是跨多个配置文件的单个玩家的统计数据跟踪,因此有可能这些值中的任何一个都可能低于数据库中的当前值。 因此,我只希望它更新特定列,如果传入的发布值大于数据库中的值。 阅读一些内置的validation选项,我无法像我想的那样工作,但是,我能够编写自己的validation工作,但代价是调用Player.find(id)该模型。 有没有办法解决这个问题,以便我的Player.update()不会同时导致UPDATE和SELECT? 这是我的模型: class Player self.highestLevel self.highestLevel = @p.highestLevel end end def eval_highestScore # if record in DB has higher value , update the value if @p.highestScore > self.highestScore self.highestScore = @p.highestScore end end def player_record @p = Player.find(id) end end 关于如何提高效率的任何想法,还是我应该不管它? 我一直在为Rails 4.x寻找更大更好的鼠标陷阱

rails中的交叉唯一性模型validation

我有一个模型,我希望列包含不同的ID。 因此,用户可以跟随另一个用户,但不跟随他们自己。 移民 class CreateFollows < ActiveRecord::Migration def change create_table :follows do |t| t.integer :follower_id t.integer :followee_id t.timestamps end end end 模型 class Follow < ActiveRecord::Base belongs_to :follower, class_name: 'User' belongs_to :followee, class_name: 'User' validates :follower_id, uniqueness: { scope: :followee_id } end 但我的测试似乎失败了 测试 it ‘cannot follow itself’ do user = FactoryGirl.create(:user) follow = FactoryGirl.create(:follow, […]

获取在控制器/视图中工作的方法在模型中运行,Ruby on Rails

我正在尝试根据用户的位置向位置列下的用户模型添加字符串。 我已经完成了所有设置,我知道@ city + @ state的值被添加到正确模型中的相应列中。 问题是,似乎request.location.city和request.location.state在控制器和视图中正常运行,但在模型中却没有。 def add_location @city = request.location.city @state = request.location.state @location = @city+@state self.location = @location end 创建用户时,不会创建任何字符串,例如“losangelescalifornia”。 当我定义@city =“bob”和@state =“cat”时,所有创建的用户都在适当的位置有“bobcat”。 我知道除了这些基于地理定位的方法之外,一切都在运行。 所以我的问题是,如何在模型中运行这些方法(请纠正我,如果它不是它们),即request.location.city和request.location.state? 提前谢谢了 :)

具有多个角色的人的设计模式

我想创建一个基本模型Person ,其中包含一些与人物相关的属性,如姓名,地址,电话等。 一个Person可以是以下一种或多种 : LoginUser包含登录,密码,last_login,…的字段 CardHolder ,包含card_id,last_entrance,…的字段 只有一个标志的Supplier ,无论该人是否是供应商 无论该人是否是Recipient ,只Recipient一个标志的收件人 Ruby on Rails中是否存在常识或最佳实践设计模式来表示inheritance? 它应该如何在模型和表结构中表示,以便可以检查Person是否是LoginUser并访问相应的字段。 在另一个项目中,我已经与STI合作,但在这种情况下,这不是正确的模式。

Ruby on Rails:在一次搜索中搜索两个模型

我有一个搜索页面,用户可以使用不同的下拉菜单搜索不同的项目。 他们可以一次搜索多个字段,如果找到与所有字段匹配的项目,搜索将返回一些内容。 inheritance我的项目控制器中的搜索操作: def search @search = params[:client], params[:industry], params[:tech], params[:keywords] @project_search = Project.search(*@search).order(sort_column + ‘ ‘ + sort_direction).paginated_for_index(per_page, page) @search_performed = !@search.reject! { |c| c.blank? }.empty? @project = Project.new(params[:project]) @all_technols = Technol.all @project_technol = @project.projecttechnols.build respond_to do |format| format.html # search.html.erb format.json { render :json => @project } end end 这是我的搜索视图。 Client : “-Any-“, […]

在Rails中,如何根据第一个属性自动分配项目的所有属性

基本上,我想生成一个项目,在这种情况下,一个环。 我有不同类型的戒指: class Ring < ActiveRecord::Base DISPLAY_NAMES [ 'Silver', 'Gold', 'Diamond' ] attr_accessible :description, :display_name, :roll, :bonus, :total, :image, :gold end 有没有办法随机化DISPLAY_NAMES的戒指? 我猜的是@ring.display_name = rand(Ring::DISPLAY_NAMES) ? 有一个更好的方法吗? 一旦找到,有没有办法设置环的所有其他属性,如@ring.roll和@ring.bonus等。 例如,如果一个环出现为银,我可以在模型中声明某种if语句,表明该环是否为银而其他属性是bla bla bla? 提前致谢。 学习缓慢但肯定。

Ruby on Rails:搜索后,列出不显示所有数据

我有一个问题,我在搜索中获得了重复的结果,在我的rails应用程序中允许用户搜索数据库中的项目。 这是项目模型中的搜索function: def self.search(search_industry, search_role, search_techs_ids) _projects = Project.scoped if search_industry.present? _projects = _projects.where [‘industry LIKE ?’, like(search_industry)] end if search_role.present? _projects = _projects.where [‘role LIKE ?’, like(search_role)] end if search_techs_ids.present? _projects = _projects.includes(:technols).where(“technols.id” => search_techs_ids) end _projects end 这是我的搜索页面的一部分 Technologies : true} ) %> true, :selected => tech_ids } ) %> 这是我的搜索操作: def search […]

Rails模型:如何使属性受保护或私有在模型外不可见?

表格中有一些字段,我不希望在外面可见? 就像created_on,is_first等一样。我想通过在模型中使用回调来设置这些字段的值,但是某些人无法设置它。

Ruby on Rails:返回nil

在我的应用程序中,我正在获取某个类别,并且我根据其名称过滤相关项目。 以下代码应该非常清楚: categories = Category.where(:id => params[:category_id]).includes(:items).where(“lower(items.name) like ?”, “%#{params[:keywords].downcase}%”) 但是,如果名称filter排除了所有项目,则返回的categories对象为nil。 这是预期的行为吗? 即使存在或不存在任何项目,我如何获得该类别?

建模相同模型之间的两种不同关系

两个模型组织和用户具有1:多关系,其中组织具有多个用户(成员;用户也可以不与任何组织关联): class Organization :all_blank, :allow_destroy => true validates_associated :users end class User < ActiveRecord::Base belongs_to :organization, inverse_of: :users end 一切正常,各种测试都通过了。 现在我为主持人function添加了一个额外的关系,其中用户可以拥有(多个)组织的主持人权限。 因此,通过第三个模型有很多:很多关系,我将其称为主持人: class Organization :all_blank, :allow_destroy => true has_many :moderators, class_name: “Moderator”, foreign_key: “reviewee_id”, dependent: :destroy has_many :users, through: :moderators, source: :reviewer validates_associated :users end class User < ActiveRecord::Base belongs_to :organization, inverse_of: :users has_many :moderators, […]