我一直在阅读文档以获得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) 我正在使用宝石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) 我有一个模型画板和一个模型组,它们通过名为 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 中有一个名为 …
我正在使用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的顶级行为.默认情况下是真的."
我有一个活跃的模型模型,我想使用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的
我需要先按 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
试图围绕一些ActiveModel关联策略.
这就是我想要完成的事情:
Quiz属于LessonUser可以参加测验(他们不拥有测验)所以,我相信我需要一个through类型表,例如,user_quiz_scores它会为我提供以下列的跟踪信息:
假设到目前为止这个思维过程是正确的,模型看起来像:
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)
分数模型/表格实际上是我在缠绕我的头部时遇到的问题.也许我过于复杂了?非常感谢任何帮助/建议!
activemodel ×7
ruby ×4
actionview ×1
activerecord ×1
group-by ×1
mongoid ×1
sql ×1
validation ×1