Tag: rails activerecord

Rails:ActiveRecord在哪里vs合并

首先,我得到特定日期之间的审核状态。 date_range = Date.parse(@from_date).beginning_of_day..Date.parse(@to_date).end_of_day @review_statuses = ReviewStatus.where(updated_at: date_range) 接下来,我需要应用’AND’条件。 @review_cycle = params[:review_cycle] if @review_cycle.present? @review_statuses = @review_statuses.merge( ReviewStatus.where(evidence_cycle: @review_cycle) .or(ReviewStatus.where(roc_cycle: @review_cycle))) end 现在,对于下面我应该应用’where’或’merge’。 @status = params[:status] @review_statuses.where(evidence_status: :pass, roc_status: :pass) if @status == ‘pass’ 有人可以解释,我们什么时候应该使用merge而不是where ?

使用ActiveRecord在Rails中实现复杂的关系

我的另一个问题 : 我需要做的是:用自己的指定信息字段创建多个类别(即,汽车与Pets有不同的字段),一旦创建了这样的类别,我将调用我需要的命令,每个类别的新表将会做成。 我知道我可以将所有字段存储为某种字符串,然后处理它以正确显示它,但我需要为我的Web应用程序提供高级搜索function,并为每个类别创建单独的表似乎是实现它的最佳方式。 我真的很想听听这个的替代方案 所以我有这种情况,我需要类别来保存该特定类别所需的所有输入字段。 所以在管理中,我有这样的表格,我可以将类别名称,一些其他相关信息添加到类别本身,然后这些字段将收集有关在制作时向用户呈现的HTML字段的信息。进入这个特定类别。 例如,这将是一个狗类: 分类名称:狗 启用类别:1 分类父母:宠物 领域: 标题 – 文本字段(将自动添加到每个类别) 品种 – 选择领域 年龄 – 数字字段 颜色 – 文本字段 价格 – 数字字段(将自动添加到每个类别) 描述 – 文本区域字段(将自动添加到每个类别) 所以现在在这个阶段,当用户为Dog类别创建所有这些特定字段时,我无法确定当用户点击提交按钮以保存此类别时会发生什么。 我想到了这两个解决方案: 为每个新类别创建一个新模型/表(上面的读取链接问题),将所有HTML字段作为列,并在categories表上存储一行,其中包含有关此类别的一些基本信息 将所有内容存储在categories表中,并有一个fields_json列,它将存储所有HTML字段信息(我实际上不会存储HTML,但基本信息是字段的内容,然后在控制器中动态创建HTML表单字段)作为JSON字符串。 我可以在create很好地呈现这些字段,但是在update时填充这些字段(可能)会很麻烦,搜索function对于这种替代方案来说效率不高。 所以我正在寻找的是第三种选择,所以我可以解决我的问题。 什么是解决此问题的有效方法,并能够使用不同的输入字段的类别,并能够有效地执行这些类别的搜索? 我正在开发的项目是在Ruby on Rails 4中创建的,数据库是在MySQL中创建的。

Rails:Polymorphic assosiation和accepts_nested_attributes

附件不会保存。 我在这里缺少什么? 在我的应用程序中,我有一个项目,每个项目用户都可以上传许多资产。 上传由载波完成。 这是模特 class Project :assetable,dependent: :destroy accepts_nested_attributes_for :assets, :allow_destroy => true end class Asset true mount_uploader :attachment, AttachmentUploader #carrierwave validates :attachment, presence: true validates :project_id, presence: true end 这些是我的project_controller中的动作 def new @project = Project.new @asset = @project.assets.build end def create @project = Project.new(project_params) @project.assets.build respond_to do |format| if @project.save format.html { redirect_to […]

为Active Record中的add_column和add_index添加唯一:true

即使我的应用程序不允许用户键入某个位置,我也希望在数据库中强制执行城市的唯一性。 由于我的Rails应用程序将在city列上搜索,我想在city列上添加一个索引,但是想知道是否重要的​​是添加唯一:true也在索引上。 这是重复吗? 如果这没有意义,如果你能解释原因我真的很感激。 class CreateLocations < ActiveRecord::Migration def change create_table :locations do |t| t.string :city, unique: true t.string :state t.timestamps end add_index :locations, :city, unique: true end end

ActiveRecord中的PostgreSQL jsonb字段属于关联

我可以在belongs_to关联中使用jsonb字段作为foreign_key吗? 有点像: belongs_to :product, class_name: “Product”, foreign_key: “data ->’product_id'”

rails有效记录查询一起列出的2个属性

我想创建一个索引任务站点,并希望在同一列表中列出所有任务(模型中的传入名为execu_tasks和模型中的传出名为assigned_tasks),基于created_at进行混合。 使用以下代码,我可以为传入和传出任务创建彼此之间的2个单独列表,但看起来不太好。 我甚至不确定是否应该在模型,控制器或视图中进行一些更改。 task.rb belongs_to :assigner, class_name: “User” belongs_to :executor, class_name: “User” user.rb has_many :assigned_tasks, class_name: “Task”, foreign_key: “assigner_id” has_many :executed_tasks, class_name: “Task”, foreign_key: “executor_id” tasks.controller.rb def index @user = current_user @assigned_tasks = @user.assigned_tasks.order(“created_at DESC”) @executed_tasks = @user.executed_tasks.order(“created_at DESC”) end 任务/ index.html.erb

编辑表中的多行(更新多个记录)

我在Payments#index中有一个付款记录列表。 我被要求直接编辑该表,并有一个按钮保存所有更新。 到目前为止,我只是部分设法通过将每行包装在该记录的form_for中来实现这一点,如下所示: 是否可以编辑所有记录然后有一个更新按钮而不必单独保存每条记录? 如果是这样,我该怎么做呢?

在视图中显示关联模型的属性

我想获取在博客应用程序中创建文章的用户的用户名或电子邮件(都在用户表中)。 目前,我可以从articles_controller.rb获取用户ID def create @article = Article.new(params[:article]) @article.user_id = current_user.id @article.save redirect_to article_path(@article) end 但不知道如何获取用户名或电子邮件。 基本上我想在文章索引页面上显示用户名或电子邮件。 请建议我如何完成它 user.rb class User < ActiveRecord::Base has_many :articles has_many :comments # Include default devise modules. Others available are: # :token_authenticatable, :confirmable, # :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable # Setup accessible (or protected) attributes […]

如何从模型实例中发现可访问的属性名称?

这个答案说你可以做object.attribute_names来获取模型实例的属性名称列表。 但有没有办法获得所有可访问属性名称的列表?

如何选择一天中每小时的最新记录

我想根据日期时间列’reading_on’选择给定日期中每小时的最新记录。 我执行了以下查询 hourly_max = InverterReading .where(“DATE(reading_on) = ? AND imei = ?”, Date.today, “770000000000126”) .group(“HOUR(reading_on)”) .having(“max(HOUR(reading_on))”) hourly_max.group_by(&:id).each { |k,v| puts v.last.reading_on } 在上面的查询中,我没有得到所需的结果。 选择一天中每小时最新记录的正确方法是什么。 下面是表格结构