Tag: rails activerecord

将数组值发送到ruby中的sql查询?

我正在努力解决看似ruby的语义问题。 我正在编写一个从表单中获取可变数量的参数并创建Postgresql查询的方法。 def self.search(params) counter = 0 query = “” params.each do |key,value| if key =~ /^field[0-9]+$/ query << "name LIKE ? OR " counter += 1 end end query = query[0..-4] #remove extra OR and spacing from last params_list = [] (1..counter).each do |i| field = "" field << '"%#{params[:field' field << i.to_s field […]

ActiveRecord:返回对象时隐藏列

是否有一种开箱即用的方式来在返回ActiveRecord对象时始终隐藏/删除列(例如,User.password)? 谢谢。

使用活动记录按月和日查找记录,忽略年份和时间

我有一个模型(参赛作品),有五年的记录(每天一个记录)。 我需要一个方法,当传递一个日期对象,如2011-12-25 00:00:00 ,将显示所有在12月25日发生的记录(查询:created_at列),无论年份如何或时间过去了。 RoR 3.0.9 / Ruby 1.9.2p290

未定义的方法`key?’ 为零:NilClass

我是Rails的新手,正在关注Ryan Bate关于如何制作一个简单的身份validation系统的教程( http://railscasts.com/episodes/250-authentication-from-scratch?autoplay=true )我正在经历它但得到了这个错误:` NoMethodError in UsersController#new undefined method `key?’ for nil:NilClass Rails.root: C:/Sites/authentication` 我真的不知道这意味着什么,因为我只是一个初学者,但这些是我的文件: 用户控制器: class UsersController “Signed up!” else render “new” end end end new.html.erb: Form is invalid 的routes.rb Authentication::Application.routes.draw do get “sign_up” => “users#new”, :as => “sign_up” root :to => “users#new” resources :users end 用户模型 class User create validates_presence_of :email validates_uniqueness_of :email […]

如何在rails中创建具有外键别名的灯具?

我有两个模型, App和User ,其中App有一个创建者是User 。 # app.rb class App < ActiveRecord::Base belongs_to :creator, class_name: 'User' end # user.rb class User < ActiveRecord::Base has_many :apps, foreign_key: "creator_id" end 我如何为此创建灯具? 我试过了: # apps.yml myapp: name: MyApp creator: admin (User) # users.yml admin: name: admin 但这不起作用,因为关系是别名外键,而不是多态类型。 省略创建者行中的(User)也不起作用。 我已经看过几个关于外键和灯具的线程,但没有一个真正回应这个。 (许多人建议使用factory_girl或机械师或固定装置的其他替代品,但后来我在其他地方看到他们有类似或其他问题)。

多对多连接和关联

用户可以通过Clips Scaffold上传Clips Scaffold ,此剪辑属于Show和/或Album (显示控制器,相册控制器)。 用户可以拥有 只有一个节目 很多ALBUMS 我想要完成的事情: 用户可以上传剪辑 ,这些剪辑可以附加到“ 显示”或/和“ 相册” 有关更详细的概述,请查看下图: 问题#1我不理解的是我必须使用的关联。 我目前的型号: 用户模型 : has_many :clips, dependent: :destroy has_one :show, dependent: :destroy has_many :albums, dependent :destroy 剪辑型号 : belongs_to :user 显示模型 : belongs_to :user 专辑模型 : belongs_to :user ——————————————————————————— 问题#2我不确定如何完成,当用户上传剪辑时,他可以将它附加(或分配)给一个节目或专辑。 我对Show做了什么(因为只有一个)只是在View页面上调用。 这意味着用户上传的每个剪辑都会出现在Show上。 哪个错了…… 现在我有一个Show和一个专辑我必须让用户能够选择在哪里附加它(在他拥有的许多专辑之一,或他的节目)。 或者我应该使用一个解决方案,用户可以通过相册或显示控制器上传剪辑(而不是通过单独的剪辑控制器 ) 我真的需要一些帮助:)

Rails 3查询:使用’select’和’order’时出错

我试图回答这个问题 ,我得到了这个问题。 我有一个具有id , email和first_name列的用户模型。 因此,在单个查询中,我想选择具有不同first_name用户,通过email对其进行排序并获取其ID 。 我怎样才能做到这一点? 什么行不通: User.select(:first_name).uniq.pluck(:id) 因为它触发了这个SQL SELECT DISTINCT “users”.”id” FROM “users” 。 这是从用户中选择不同的id。 但是我们想要选择不同的first_name User.order(“email DESC”).pluck(:id).uniq SQL生成: SELECT “users”.”id” FROM “users” ORDER BY email DESC 。 这不起作用,因为生成的sql不检查first_name的唯一性。

带有Postgres数据的Rails不按顺序返回

我刚刚将我的应用程序从MySQL转换为Postgres。 以前,对.all的请求以id顺序返回所有行。 在Postgres上,行无序返回。 同样, Person.first 用于返回id为1的记录,现在它有时会返回另一条记录。 如果我添加这样的订单子句: Person.order(“id”).first 查询成功并返回第一行。 这是预期的行为吗?

has_one嵌套属性不保存

我有两个模型Project和ProjectPipeline。 我想创建一个Project表单,该表单也包含ProjectPipeline模型中的字段。 我已成功创建表单但是当我点击保存时,值不会存储在数据库中。 project.rb class Project < ActiveRecord::Base has_one :project_pipeline accepts_nested_attributes_for :project_pipeline self.primary_key = :project_id end projectpipeline.rb class ProjectPipeline < ActiveRecord::Base belongs_to :project, autosave: :true validates_uniqueness_of :project_id end 我并不总是想要一个项目管道,但是在适当的条件下,基于用户查看项目。 我希望构建项目管道字段,但只有在用户选择保存/填充它们时才会保存。 因此,当项目显示时,我使用project_id构建一个临时项目管道:来自params [:id](不确定我是否真的需要这样做)。 然后,当项目保存时,我使用create_attributes。 但是如果它已经被创建或构建,我只想让has_one和belongs_to关联启动,然后使用update_attributes。 我的问题是当我试图保存时,如果我使用params [:project_pipeline]或者如果我使用project_params则根本没有保存,我要么遇到’Forbidden Attribute’错误。 我已经检查并重新检查了我在project_params中的所有字段,甚至尝试使用project_pipeline_params,但感觉不对。 这让我疯了,我需要睡觉。 projects_controller.rb def show @project = Project.find(params[:id]) if @project.project_pipeline else @project.build_project_pipeline(project_id: params[:id]) end autopopulate end def update […]

Rails范围按日期范围过滤

有关轨道日期范围问题的问题很多,但我的问题有点复杂。 我有两个模型:房子和预订。 一个房子有很多预订。 预订在日期格式中有两个属性:check_in和check_out。 我想要实现的目标:提供有效的日期范围,显示在此范围内可用的所有房屋。 详细地: 该范围的开始日期不应在任何预订中。 该范围的结束日期不应在任何预订中。 开始和结束之间不应该有任何预订。 可以使用导轨示波器完成吗? 更新: 我发现下面的代码可以检查重叠的范围日期间隔。 named_scope :overlapping, lambda { |interval| { :conditions => [“id ? AND (DATEDIFF(start_date, ?) * DATEDIFF(?, end_date)) >= 0”, interval.id, interval.end_date, interval.start_date] }} 如何将此转移到我的问题?