不知怎么的,我总是在星期五买这些
我之前的问题是关于同一个问题,但我现在可以缩小范围:
我整天都在玩这个,想弄明白它的意思。我有一个带有锁型柱的表,指定如下:
add_column :jobs, :lock_version, :integer, :default=>0
我会这样做:
foo = job.create!
first = Job.find(foo.id)
second = Job.find(foo.id)
然后,我验证第一个和第二个引用了相同的对象——它们的ID是相同的,并
什么是活动记录?我听说Ruby post和nhibernate中使用了这个术语。这是一种设计模式
活动记录是一种设计模式,您可以将每个表映射到一个类。这意味着从该类创建的每个对象都表示表中的一行
最初是一个,涉及在类中包装数据库表操作
然而,在Rails上下文中,它也是在Ruby中为实现设计模式的的专有名称,以及与其关联的的名称
我正在将rails 2.3应用程序升级到rails 3.0.3
我的产品型号上有以下关联扩展和范围
has_many :related_products, :through => :product_related_products do
[:alternative, :complement, :bigger_pack, :higher_quantity, :lower_quality].each do |meth|
define_method(meth) {
我对Rails还比较陌生,只是喜欢它富有表现力的建模架构。我目前正在构建一个路由系统,在两个表之间有一对多链接
考虑以下模式:
class CreateTrips < ActiveRecord::Migration
def self.up
create_table :trips do |t|
t.string :name
end
end
...
end
class CreatePitStop < ActiveRecord::Migratio
我该怎么做
all_tickets = Ticket.find(:all)
all_tickets.each do |at|
if at "a condition"
all_tickets.delete(at)
end
end
使用这段代码,我从数据库中删除了at元素,但我只想在“a条件”为true时从all_tickets ActiveRecord散列中删除at元素
感谢您的帮助根据您的提示,此解决方案已转换为不使用sql。简而言之,抓取票据,循环它们,如果条件为真
我有一个Order/LineItem类型的应用程序,它将订单及其关联的行项目插入数据库。创建订单后(创建后),我调用一个函数来更新订单表中的totals字段。但是,当运行此命令时,它还会对所有行项目运行更新查询,并且由于:update的纸张跟踪处于活动状态,因此它也会导致插入新版本。问题是,行项目可能有数百个(到目前为止最大的是872个),因此显然这不是非常优化的,因为有书面记录,我们得到了不必要的版本
我已经看过:touch符号,但这似乎只适用于child>parent,而不适用于parent
我有两个表图书和类别,想加入图书类别
LEFT JOIN categories ON books.category_id = category.id
Books::find()
->joinWith('category', true, 'LEFT JOIN');
如何手动设置columsbooks.category\u id=category.id,因为它不是主键。您必须将关系添加到图书模型中,例如(因为我不知道您的关系类型,我添加了两个普通示例)
那么你应该可
我想我还是个新手,但我再次需要你的帮助。当我在habtm协会工作时,我遇到了问题。我有一个表格,可以输入有关计算机的信息。habtm是机器和操作系统之间的关联
class Machine < ActiveRecord::Base
....
has_and_belongs_to_many :operatingsystems, :join_table => "machines_operatingsystems", :readonly => false
...
我需要从数据库中找到几个学生,他们的主键用逗号分隔
通常情况下,使用SQL时会出现以下情况:
$cleanedStudentIdStringList = "1,2,3,4";
SELECT * FROM Student WHERE id IN ($cleanedStudentIdStringList)
Yii的ActiveRecord似乎在结果SQL语句中的绑定参数周围插入了一个引号,这会导致在使用参数绑定时查询失败
$students = Student::model()->findA
在轨道3.1 RC6上,给定
class Animal < ActiveRecord::Base
default_scope where(legs: 4)
end
如何完全覆盖父类的默认范围
我也尝试过以下方法,但都不管用:
default_scope{ unscoped.where legs: 2 }
default_scope with_exclusive_scope{ legs: 2 }
我深入研究了Rails的源代码,提出了一个在Rails 3.1下工作的解决方案(使用ac
除了成功地进行了Rails迁移外,我从未获得过任何东西,因此这一次对我来说尤其令人困惑。我有一个我刚刚编写的迁移,它相当简单,但是当我尝试运行它时(第一次,或者在回滚并再次尝试之后),控制台在几秒钟内没有输出,作业结束,我的数据库没有发生任何更改,除了检查rake DB:migrate:status将显示迁移已经运行(或者,它认为已经运行)
迁移代码如下:
class AddNotesToCases < ActiveRecord::Migration
def up
ad
我是Yii的新手,在建立AR关系方面有困难。
我与Rails活动记录有过接触,但无法在Yii中设置简单的关系
典型的例子是两个模型,业务和业务描述,其中一个业务可以有N个业务描述
Im使用MySQL和MyIsam引擎,并在BusinessDescription中声明了一个名为business_id的FK
业务关系:
public function relations()
{
return array(
'businessdescription' =>
标签: Activerecord
ruby-on-rails-6has-and-belongs-to-manyrails-activestorage
我有一个为JSON API响应序列化的产品列表
为此,我还需要来自ActiveStorage附件的imageUrl。
我被1+N问题绊倒了
如您所见,我已经尝试包含任何类型的“includes”
我已经添加了带有照片的“”
如何解决此1+N问题?
型号:
class Product
ActiveStorage::Current.host = ENV['APPLICATION_URL']
include Rails.application.routes.url_helpers
has
我听过所有关于Rail的持久性引擎(ActiveRecord)的讨论。我对它做了一次搜索,但我真的不知道它做了什么。它看起来像是一个映射到数据库的对象,但这就是我想到的。如果是这样,他们是否将对象保存到数据库以保持持久性?使用这种模式的优点是什么?缺点是什么
谢谢!
Matt Mueller活动记录基本上是一种将类映射到关系数据库表的模式。对象表示数据库中的行。AR框架通过为每个数据库引擎生成适当的SQL语句来处理这些对象的保存和加载
示例
Database Table
我有以下表格和关系:
user has_many projects
project has_many tasks
task has_many actions
我想构建一个范围,允许我选择所有当前用户操作,而不管他们属于哪个项目或任务
谢谢如果您使用该插件,我认为不需要使用作用域
class用户:项目
有许多:操作,:到=>:任务
终止
类项目:任务
终止
User.first.actions
我发现了一些有效的方法
在操作模型中:
def self.owned_by (user)
jo
嘿,我希望你能帮我
@课程=课程。其中(:id!=当前用户。课程)
我想获取当前用户未注册到的课程
@courses=Course.where(:id=>current_user.courses)为我提供了用户注册到的课程。但我想要相反的结果
联想很好。我可以使用current\u user.courses或current\u user.assignments。您可能需要这样的东西:
@courses = Course.where("id NOT IN (?)", current_user.co
我想知道是否有更好的方法:
我有两个复杂的关系,其中多个连接连接到表D。我想组合/连接它们以获得表D记录。以下方法有效,但有更好的方法吗
class TableD < ActiveRecord::Base
def self.relation_three
r1 = TableA.relation_one.select("d.id")
r2 = TableB.relation_two.select("d.id")
where("d.id IN (#{r1.to_sql}) OR
3-4个月后,我回到了另一个关于RoR的项目,Mongoid。我被困在这个奇怪的问题上。因为我一直在跟踪Mongoid。
因此生成了mongoid.yml,删除了database.yml。改变
#require 'rails/all'
require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "rails/test_unit/railt
我将首先描述我的初始问题-我有几个站点全局变量(例如我是否在线/离线,物品的价格等)。。我想知道如何最好地存储/检索这些,因为它们在大多数页面上都是必需的
最后,在一些指导之后,我选择将它们存储在数据库中,并创建一个组件类(在Yii中)从任何地方访问它们:例如echo Yii::app()->variables->price
我是Yii的新手,我一直在四处搜索,但找不到如何正确地将DB(AR样式)连接与组件连接。。到目前为止,我已经创建了一个模型类和DB,其中包含列'id',name',valu
我一共有两个模型和三个表格。不幸的是,已经从原始表名中对模型进行了一些重命名,请原谅这种混淆:
Symptom (chief_complaints)
SymptomName (chief_complaint_names)
(chief_complaint_name_translations)
当然,Globalize3使用后者来转换SympleName模型的:name属性。症状有很多:症状名称
考虑以下几点:
Symptom.includes(names: :translations).ord
我正在尝试使用FactoryGirl创建一个测试数据库,该数据库具有一个关联,即父项有多个条目。此时,将抛出ActiveRecord验证错误,父级不能为空。我在这件事上经历了一段艰难的时光,我尝试了很多很多方法来创建这个测试数据库。我想我已经很接近了,但我甚至可能还没有接近,可能有一些基本的错误,所以任何和所有的建议都是非常感谢的
我猜散列{parent_id::id}没有被传递到条目工厂。这将使验证失败。但是,我不知道实际情况是这样的,即使是这样,我也不知道如何解决它。提前感谢你的帮助
错误是
我的问题可能类似于以下问题:
然而,由于通过连接表处理多对多关系,这里的情况有所不同
例如,我有三个表,Jobs,Eqtypes和连接表eqtypeu Jobs。我想使用simpleactiveform和multiple-selectdropDownList将一些eqtype与当前的作业关联起来。以下是我在控制器和视图中的代码:
//the controller code
public function actionEqtypeCreate($id)
{
$eqtypes = \app\m
我有一个订单表,看起来像这样:
其中,分类帐id是uuid,版本是时间戳
每个分类帐id可能有许多订单。这是一个非规范化的表btw,用于通过处理FWIW跟踪订单及其进度
如果有两个分类帐id进来,我们需要每个分类帐id的最新订单,那么ActiveRecord查询会得到什么
我觉得我很接近。我有这个:
orders=Order.where(分类账标识:分类账标识)。组(:分类账标识,:标识)。具有('version=MIN(version)')。首先
其中,ledger\u id是一个由1个或多
我正在尝试resque,但不确定resque worker实例的生命周期。假设我通过以下方式设置了任务:
class User
def self.start_job(str)
Resque.enqueue(Job, str)
end
end
及
消息创建后,有一个After_create hook调用另一个长时间运行的任务:
class Message < ActiveRecord::Base
after_create (or after_commit) :do
我一直在遵循教程,在业务模型和类别模型之间建立许多关系
我的桌子是:
business[id (PK),name,date,...]
business_category[businessID (FK to business.id), categoryID (FK to category.ID)]
category[id (PK), name, date,...]
在我的商业模式中,我有
public function relations()
{
return array(
我有一个模型(Inmueble)与此关系:
'direccion' => array(self::BELONGS_TO, 'Direccion', 'direccion_id_direccion'),
在本例中:
$criteria=new CDbCriteria;
$criteria->addCondition('name = ' .$name,'AND');
$listInmueble=new CActiveDataProvider('Inmueble',
我目前正在进行重构,将关系从一->多调整到多。出于各种原因,我们需要维持现有关系的一部分,这样我们才能维持现有合同
为了解决问题,让我们调用这些模型任务< /代码>和团队>代码>,并考虑额外的1个:团队>代码>和成员< /代码>之间的许多关系。鉴于以下情况:
class Task < ApplicationRecord
belongs_to :team
has_one :captain, -> {//some join/ordering code}, through: :te
我使用的是rails5.0和ruby 2.6.4
如何使用活动记录获取日期字段的年份部分大于等于当前年份的所有记录?在my modelClassSection中,用户可以创建将开始日期(日期列)字段设置为未来日期的记录
我知道这是错误的,但我应该告诉你我需要什么
ClassSection.where('year(start_date)>=?',date.today.year)
我是在一个助手方法(和测试的控制台)中完成这项工作的,所以不确定是否需要一个作用域或者该作用域是否有效。我只是在线做这个
使用active record时,如何获取为数据库定义的所有表的列表?不知道active record,但这里有一个简单的查询:
选择表格名称
来自信息\u SCHEMA.Tables
其中TABLE_TYPE='BASE TABLE'似乎应该有更好的方法,但下面是我解决问题的方法:
Dir["app/models/*.rb"].each do |file_path|
require file_path # Make sure that the model has been loaded.
在编写activerecord查询时,当我需要在查询中使用“或”时,我通常只使用常规sql语法[field_a='b'或field_c='d']。我只是想知道是否有一种不用sql的方法可以做到这一点?曾尝试过谷歌搜索“activerecord或”,但毫不奇怪,没有多少乐趣
感谢您的建议。单独使用ActiveRecord是不可能的。关系的各个部分始终是“和”在一起的,因此唯一的选择是对.where()的该部分使用SQL字符串
否则,您现在可以求助于Arel:
使用RubyonRails 5,您可以
我一直在绞尽脑汁寻找一个优雅的解决方案来解决这个问题(这个问题似乎没有得到太多的解决)
我喜欢状态的流动性,但它似乎非常容易受到竞争条件的影响,因为您可能同时拥有100个独立的“权威”状态副本(使用足够繁忙的web应用程序)
例如,如果我有一个页面,该页面使用如下代码为玩家提供分数:
$user = User::fromUsername($username);
$user->points++;
$user->save();
$user = User::fromUsername($u
我在rails 3.1.1项目中使用ActiveModels,没有数据库后端
我想知道如何将属性类型设置为String、Boolean和Decimal
据我所知,当使用数据库支持的ActiveRecord时,类型将直接从数据库元数据中获取。但是如果没有数据库,我在哪里定义属性类型
编辑
我想我的问题可以问得更好,比如,如何将模型元数据添加到由rest或JSONRPC2服务支持的模型中
例如,我可以创建转换器,确保将该模型编码为JSON,知道哪个属性(ruby中的属性,JSON中的属性)是布尔值,
我想获取在最接近当前日期的日期创建了的记录。如何使用活动记录“where子句”您可以通过以下内容找到过去最接近的记录:
Record.where("created_at <= ?", Date.today).order_by("created_at DESC").limit(1)
然后比较哪个最接近当前日期
可能有一个解决方案可以通过一个请求来实现,但我找不到如何实现(如果您使用的是SQL server,则有一个方法DATEDIFF可以提供帮助)
更新:感谢米沙
如果您确定在创建的所有都
我一直试图找到详细的Arel文档,但徒劳无功。最后,我试着深入研究源代码,并找到了你
以下工作(请注意最后的to_sql):
以及以下工作:
tzdate = Arel::Nodes::InfixOperation.new('at time zone', Arel::Nodes::InfixOperation.new('at time zone', Audits.arel_table[:created_at], 'gmt'), Time.zone.tzinfo.name)
由于TypeErro
我正在尝试使用没有Rails的ActiveRecord编写一个应用程序作为gem
我的问题是如何迁移一个已经由没有rake的用户部署的数据库,等等。我刚刚分发了一个schema.rb文件,并从中创建了数据库。但是现在我想允许用户更新到一个新的gem并迁移他们的数据库
我看过ActiveRecord::Migrator,但不知道如何使用它
例如,我如何告诉ActiveRecord::Migrator从当前的\u迁移开始运行所有迁移
有人对如何进行这项工作有什么建议或很好的参考吗?在今天早上参加了这
我正在努力找到解决方案和正确的术语来描述我认为非常简单的场景:
我有一个模型列,我试图在数据库中找到最常见的唯一值。假设我有一个动物园应用程序,其中包含一个具有物种属性的动物类。我想数一数动物园里排名前十的物种。范围是我最终想要达到的目标
我尝试按计数添加订单,但未成功。rails文档似乎没有明确介绍这种情况:
Animal.group(:species).count.take(10)
我有一个简单的关系
Playlist (id, title)
which has_many
Playlistships(playlist_id, post_id)
playlishp是Playlist和Post类之间的关联。当用户向“播放列表”添加“帖子”时,将创建一个新的“播放列表”。当从“播放列表”中删除“帖子”时,相应的“播放列表”将被销毁
我想创建一个查询,该查询将按playliships的顺序返回“Playlists”。已在
基本上,我希望有一个视图,显示最近通过playlish
我有两个表,用户和组。一个用户可以属于多个组。一个组可以有多个用户
因此,我使用联接表groups\u users在用户和组之间创建了一个have\u和\u belient\u to\u many关系。这一切都按预期进行
我还想为每个用户指定一个活动组。如果不是因为我已经定义的habtm关系,我将在活动组的用户中创建一列“group_id”,然后我将定义模型之间的一对多关系,如下所示:
class User < ActiveRecord::Base
belongs_to :group
我试图测试一个基于其他作用域链的作用域。(“下面的公共_流”)
但是,我仍然收到此错误:
Failure/Error: Entry.public_stream(@user)
undefined method `includes_values' for #<Entry:0xd7b7c0>
失败/错误:Entry.public\u流(@user)
未定义的方法“包含值”#
似乎includes_values是ActiveRecord::Relation对象的一个实例变量,但当我尝试存
我们正在构建一个应用程序,创建类似于Facebook的群页面的群页面。有人可以发布到某个页面,该页面可以有回复。因为它们具有非常相似的属性,所以帖子和回复被合并到同一个STI表中
class Page < ActiveRecord::Base
has_many :posts
has_many :replies, through: :posts
end
class BasePost < ActiveRecord::Base
...
end
class Post <
您好,我有一个应用程序模型,我尝试在rails控制台中查找\u by\u hashid
ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.1.0]
gem 'rails', '4.0.0.rc1'
我的模型:
class App < ActiveRecord::Base
include ActiveModel::Dirty
include Tokenable
has_many :categ
让我们假设以下操作的控制器:
class PostsController < ApplicationController
def create
@post = Post.create(post_params)
end
private
def post_params
params.require(:post).permit(:title, :content)
end
end
什么是干净的方法呢
假设我有一个包含数千篇文章的文章表。我试图找出最有效的方法来找到5个最长的文章名,而不是文章本身
这就是我到目前为止所做的:
def self.five_longest_article_names
limit(5).order("(LENGTH(name)) desc").pluck(:name)
end
但它使用SQL。是否有我可以执行的ActiveRecord查询?您可以始终为arel创建自己的名称函数:
my_length = Arel::Nodes::NamedFunction.n
我创建了一个ActiveRecord模型,用户在其中输入电子邮件并添加到Yii2中的数据库。当它们被添加到数据库中时,我想根据它们从哪个视图输入信息来更新我的一个属性。我知道Yii2允许您在模型中设置默认值,如
public function rules()
{
return [
[['view'], 'default', 'value' => a]
]
}
但我不知道如何根据每个视图设置不同的默认值。在我的视图中,我有表单->字段($model,'ema
我有两种模式:用餐计划和晚餐。每顿饭都有一周的晚餐,每顿饭都可能有几顿饭
我想知道最好的办法是把7个晚餐ID保存到一个用餐计划中。最初,我只是想用助手将一组晚餐ID保存到用餐计划的参数中:
def create_week_of_meals(week)
ids = []
week.each {|dinner| ids.push(dinner.id)}
return ids
end
使用强参数:
参数要求:膳食计划。许可:用户id,
我有一个模型
class Drug extends ActiveRecord
{
/**
* @return \yii\db\ActiveQuery
*/
public function getProblems()
{
return $this->hasMany(Problem::class, ['id' => 'problem_id'])
->via('consumptionRateProb
我有一个应用程序,它处理带有行项目的订单。行项目以JSON格式作为订单的一部分,例如:
{
"customer_id":24,
"line_items":[
{
"variant_id":"1423_101_10",
"quantity":"5",
"product_id":"1423"
},
{
"variant_id":"2396_101_12",
"quantity":"3",
"product_id":"23
为什么即使创建一个事务,该事务也不会回滚!失败?
如果这有什么不同的话,它在控制器中
def process_photos(photos)
ActiveRecord::Base.transaction do
begin
photos.each do |photo|
Photo.create!(creator_user: @user, buyer: @buyer, url: photo['url'])
end
rescue
r
在一个大型应用程序中,一个主要的模型是场馆,它已经有大约50条规则,跨越80多行。模型本身已经开始增长到1000多行代码,所以我开始分解它
首先,我开始移出一些值对象。我在想,将规则移出到单独的虚拟类是否合适,比如:
class Venue {
...
public function rules() {
return VenueRules::getRules();
}
...
}
是否有更好的方法来管理模型中的规则?这是更好的方法。您还可以使用包含较大方法的
我在我的“特权”模型上使用了布尔“猜测”,我试图让所有拥有特权的客户都知道猜测是真的
我的第一个猜测是:
@customer = Customer.includes(:perks).where('perks.guessed = true')
但这给了我一个SQL例外:“没有这样的列:true”
通过谷歌搜索,我得到了以下线索:
所以我试着:
@customer = Customer.includes(:perks).where('perks.guessed = 1')
没有运气
还尝试:
@
上一页 1 2 ...
4 5 6 7 8 9 10 ...
下一页 最后一页 共 20 页