标签: activemodel

使用ActiveModel验证Rails

我一直在阅读文档以获得ActiveRecord验证ActiveModel.出于某种原因,我没有看到任何返回的验证结果.

我有一组模型,ActiveRecord它们通过一个将位于Rails后面的自定义API连接而不是接口.

该模型:

class ApiObject < ApiConnector
  include ActiveModel::Validations
  attr_accessor :fieldName

  validates :fieldName, :presence => true
  def save
    #save method implementation
  end
end
Run Code Online (Sandbox Code Playgroud)

控制者:

def create
  @apiObject = ApiObject.new(params[:api_object])

  respond_to do |format|
    if @apiObject.save
      format.html { redirect_to(@apiObject, :notice => 'User was successfully created.') }
      format.xml  { render :xml => @apiObject, :status => :created, :location => @apiObject }
    else
      format.html { render :action => "new" }
      format.xml  { render :xml => @apiObject.errors, :status => :unprocessable_entity …
Run Code Online (Sandbox Code Playgroud)

validation ruby-on-rails activemodel ruby-on-rails-3

1
推荐指数
1
解决办法
6533
查看次数

Active Model Serializers has_many association

我正在使用宝石active_model_serializers.

串行器:

class ProjectGroupSerializer < ActiveModel::Serializer
  attributes :id, :name, :description
  has_many :projects
end

class ProjectSerializer < ActiveModel::Serializer
  attributes :id, :name, :description
  belongs_to :project_group
end
Run Code Online (Sandbox Code Playgroud)

控制器:

def index
  @project_groups = ProjectGroup.all.includes(:projects)
  render json: @project_groups, include: 'projects'
end
Run Code Online (Sandbox Code Playgroud)

我收到以下回复:

{
  "data": [
    {
      "id": "35",
      "type": "project_groups",
      "attributes": {
        "name": "sdsdf",
        "description": null
      },
      "relationships": {
        "projects": {
          "data": [
            {
              "id": "1",
              "type": "projects"
            },
            {
              "id": "2",
              "type": "projects"
            }
          ]
        }
      }
    }
  ],
  "included": …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails activemodel active-model-serializers

1
推荐指数
1
解决办法
5271
查看次数

NoMethodError:访问属性时 ActiveRecord 中的私有方法“y”

我有一个模型画板和一个模型组,它们通过名为 ArtboardsGroups 的表具有多对多关系,该表具有与该关系相关的 x 和 y 值的属性

class Artboard < ApplicationRecord
  has_many :artboards_groups, dependent: :destroy
  has_many :groups, -> { select("groups.id as id, groups.name as name, artboards_groups.x as x, artboards_groups.y as y, artboards_groups.index as index, artboards_groups.r as r") }, through: :artboards_groups
end

class ArtboardsGroup < ApplicationRecord
  belongs_to :artboard
  belongs_to :group
end

class Group < ApplicationRecord
  has_many :artboards_groups, dependent: :destroy
  has_many :artboards, through: :artboards_group
end
Run Code Online (Sandbox Code Playgroud)

当我尝试单独访问它时,该模型工作得很好,但是当我尝试通过画板选择组并访问“y”属性时,我收到一个错误,它是私有方法

NoMethodError: private method `y' called for #<Group id: 5, name: nil>
Run Code Online (Sandbox Code Playgroud)

根据这个线程(10多年前),这是因为ActiveRecord::Base 中有一个名为 …

ruby activerecord ruby-on-rails activemodel

1
推荐指数
1
解决办法
478
查看次数

如何将ActiveModel :: Base.include_root_in_json设置为false?

我正在使用Rails 3 w/Mongoid,(所以没有ActiveRecord).Mongoid使用ActiveModel的"to_json"方法,默认情况下该方法包含JSON中的根对象(我不想要).

我试过把它放在初始化器中:

ActiveModel::Base.include_root_in_json = false
Run Code Online (Sandbox Code Playgroud)

但得到错误

uninitialized constant ActiveModel::Base
Run Code Online (Sandbox Code Playgroud)

我有什么想法可以改变这个吗?我直接在源代码中更改了默认值并且它工作正常,但显然我想要正确地执行它.

该变量在此文件的顶部定义: Github - activemodel/lib/active_model/serializers/json.rb

从文档:"选项ActiveModel :: Base.include_root_in_json控制to_json的顶级行为.默认情况下是真的."

ruby-on-rails activemodel mongoid ruby-on-rails-3

0
推荐指数
1
解决办法
3379
查看次数

Rails form_for方法没有响应html选项

我有一个活跃的模型模型,我想使用form_for.

form_for(@item, url: (params[:action] == 'edit' ? api_item_path(datasheet_id: params[:datasheet_id], item_id: params[:item_id]) : api_items_path), html: {method: (params[:action] == 'edit' ? 'patch' : 'post')}) do |f|
Run Code Online (Sandbox Code Playgroud)

我这样选择url因为命名路径前面有'api_'.(这可能是一个很好的方法,但我希望这不是我的问题的一部分).

问题是带有方法键的html选项不会影响表单的方法(总是'post').

模型respond_to?:persisted?,因此ActionView正确命名表单(id ="edit_item_xxx",class ="edit_item"),但尽管该方法仍然存在.

我希望有一些明显的东西让我失踪.

以下是我用于获取信息的来源:https : //github.com/rails/rails/blob/master/actionview/lib/action_view/helpers/form_helper.rb http://guides.rubyonrails.org/form_helpers html的

ruby ruby-on-rails actionview actionviewhelper activemodel

0
推荐指数
1
解决办法
65
查看次数

Rails Group by 内部 Group by

我需要先按 YEAR 然后按 MONTH 对我的 ActiveRecords 进行分组,如下所示:

{2017=>
    "January"=>
        [Record1, record2, etc]
    "February"=>
        [Record1, record2, etc]
 2016=>
    "January"=>
        [Record1, record2, etc]
    "February"=>
        [Record1, record2, etc]
}
Run Code Online (Sandbox Code Playgroud)

等等...

我试着用

.group_by( |a| [a.year, a.month] ) 
Run Code Online (Sandbox Code Playgroud)

但我能得到的最好的是:

{[2017, "January"]=>
        [Record1, record2, etc]
 [2017,"February"]=>
        [Record1, record2, etc]
 [2016, "January"]=>
        [Record1, record2, etc]
 [2016,"February"]=>
        [Record1, record2, etc]
}
Run Code Online (Sandbox Code Playgroud)

谢谢

PS:我的模型中有名为 YEAR 和 MONTH 的列。

PS2:我使用 Ruby 2.3 和 Rails 4.2

ruby sql group-by ruby-on-rails activemodel

0
推荐指数
1
解决办法
930
查看次数

哪个Rails活动模型关联?

试图围绕一些ActiveModel关联策略.

这就是我想要完成的事情:

  1. A Quiz属于Lesson
  2. A User可以参加测验(他们不拥有测验)
  3. 测验分数已保存并属于用户

所以,我相信我需要一个through类型表,例如,user_quiz_scores它会为我提供以下列的跟踪信息:

  • quiz_id
  • 用户身份
  • user_quiz_score

假设到目前为止这个思维过程是正确的,模型看起来像:

class Lesson < ApplicationRecord
  has_one :quiz
end

class Quiz < ApplicationRecord
  belongs_to :lesson
end

class Score < ApplicationRecord
  has_many ??????
end

class User < ApplicationRecord
  has_many :scores
end
Run Code Online (Sandbox Code Playgroud)

分数模型/表格实际上是我在缠绕我的头部时遇到的问题.也许我过于复杂了?非常感谢任何帮助/建议!

ruby ruby-on-rails activemodel

0
推荐指数
1
解决办法
46
查看次数