草庐IT

model_id

全部标签

ruby-on-rails - rails : Using CanCan to define multiple roles depending on instances of single Model?

我目前一直在研究如何根据我们想要的每个条件来分离CanCan的角色。在我们的应用程序中,有很多类别(例如数学、英语、历史等),每个类别中都有很多类(class)。每个用户可以在每个类别中扮演许多不同的角色。例如,约翰可以是数学的“读者”,这意味着他可以阅读所有数学类(class)。约翰也可以是英语的“作家”,这意味着他可以阅读所有英语类(class),在类别英语中创建类(class),并仅编辑/删除他创建的英语类(class)。如果这些是John仅有的角色,他将无法在导航栏中看到类别历史记录,并且将被拒绝访问历史记录中的类(class)。这些是关系的建立方式:classUser在mod

ruby-on-rails - Friendly_id 不为旧记录创建 slug

我刚刚将Friendly_idgem添加到我的Rails项目中,希望不使用数据库ID并创建一个slug,但我似乎无法为旧记录创建slug。我的模型看起来像这样。classMapping然后我运行Model.find_each(&:save)但它一直吐出nil结果。我试过完全注释掉should_generate_new_friendly_id但没有成功。有人看到我在这里做错了什么吗?编辑我回滚了我的数据库并重写了我的迁移,这似乎已经解决了这个问题。 最佳答案 如果有人发现这个6年前的问题:没有“doandend”block:find_

ruby - MRI 内部结构 : detailed explanation of rb_id2str

在MRI中,似乎rb_id2str()当您调用Symbol#to_s时负责完成所有工作.我惊讶地发现这是一个极其神秘的函数,而我认为这是一个相当直接的操作。我正在寻找有关此功能的详细说明。作为引用,这里是1.9.3中源代码的链接:http://rxr.whitequark.org/mri/source/parse.y?v=1.9.3-p195#9950一些具体问题:什么是四大ifblock在做什么?if(idif(idif(st_lookup(global_symbols.id_str,id,&data))if(is_attrset_id(id))如果能大致了解if语句中每个代码块的作

接受对象或其 id 作为参数的 Ruby 语义

我在这里尝试按照最小意外原则工作...假设您有一个接受两个对象的方法。该方法需要这些是对象实例,但在您初始化类的地方,您可能只有引用ID。例如,这在网络服务的路由器/Controller中很常见。设置可能看起来像这样:post"/:foo_id/add_bar/:bar_id"doAddFooToBar.call(...)end有许多不同的方法可以解决这个问题。对我来说,这里最“惯用的”是这样的:defAddFooToBar.call(foo:nil,foo_id:nil,bar:nil,bar_id:nil)@foo=foo||Foo[foo_id]@bar=bar||Bar[bar

ruby-on-rails - 在对象空间 object_id 中复制类

我遇到一个奇怪的问题,我正在使用的Rails引擎中的某些模型在对象空间中被复制。(rdb:1)ObjectSpace.each_object(::Class).each{|klass|putsklass.to_s+":"+klass.object_id.to_sifklass.to_s.eql?("DynamicFieldsets::Field")}DynamicFieldsets::Field:66866100DynamicFieldsets::Field:718363802479发生这种情况时,我不能使用is_a?或相等性检查以测试对象是否是Field类的实例。这个问题只发生在开发

ruby-on-rails - pg_search 使用 associated_against 给出错误 "column [model_name].[associated_column_name] does not exist"

我正在尝试使用pg_search来搜索关联模型。当我运行搜索时,出现错误“PG::Error:ERROR:columnplans.namedoesnotexist”。我正在“计划”模型中运行搜索,并尝试针对“地点”与列“名称”的关联进行搜索。连接这些的has_many:through模型是多态的。不知何故,sql查询将两者结合起来并抛出错误。我已经运行了associated_against迁移(railsgpg_search:migration:associated_against),搜索了文档,并寻找其他有错误的人,但一无所获,一定是我只是忽略了一些东西。如果我只是删除plan.rb

ruby-on-rails - ruby rails : Unit Testing non activerecord models and still load fixtures

我可能遗漏了一些东西,但我陷入了这种情况:我有一个非activerecord模型,我想对其进行测试。我从Test::Unit::TestCase派生了它的测试用例类。但是,模型的测试用例类在其自身内部使用了其他activerecord模型类,我想为它们加载固定装置。我的问题是fixtures类方法仅在我从ActiveSupport::TestCase继承测试用例类时才可用(它在ActiveRecord::TestFixtures包含在ActiveSupport::TestCase中)。任何帮助,因为运行测试都会给我错误:未定义的方法“fixtures”(这是可以理解的),如果我从Act

ruby-on-rails - 从 Virtus.model 动态扩展时使用 boolean 属性辅助方法

假设我有一个带有boolean属性active的Virtus模型User:classUserincludeVirtus.modelattribute:active,Boolean,default:false,lazy:trueend然后我可以使用辅助方法active?:User.new.active?#=>falseUser.new(active:true).active?#=>true但是当我尝试从Virtus.model中扩展并动态定义一个boolean属性时:classUser;enduser=User.newuser.extend(Virtus.model)user.attri

ruby-on-rails - 我在 rails generate devise :install 之前运行了 rails generate devise MODEL

我在运行初始Devise生成器之前不小心添加了我的Devise模型。我先运行的代码:$railsgeneratedeviseMODEL初始设计生成器(我应该先运行的):$railsgeneratedevise:install我现在有一个名为Model的设计Controller,它不允许我运行“rakedb:migrate”错误:rakeaborted!Userdoesnotrespondto'devise'method.Thisusuallymeansyouhaven'tloadedyourORMfileorit'sbeingloadedtoolate.Tofixit,besureto

ruby-on-rails - rails/事件记录 : save changes to a model's associated collections

我是否必须保存对模型集合中单个项目的修改,或者是否有一种方法可以在我保存模型时调用以保存它们。#save似乎没有这样做。例如:irb>rental=#...#=>#irb>rental.dvd#=>#,sale_price:#>irb>rental.dvd.copies+=1#=>21irb>rental.save#=>trueirb>rental.dvd#=>#,sale_price:#>irb>Dvd.find_by_title('TheWomenofSummer')#=>#,sale_price:#>在上面的例子中,租赁的DVD副本似乎没有更新数据库中的副本(注意不同的副本数)。