我想访问其父类(superclass)中的类名MySuperclass'self.inherited方法。它适用于classFoo定义的具体类但是在使用匿名类时失败了。我倾向于避免在测试中创建(类)常量;我希望它能与匿名类一起使用。给定以下代码:classMySuperclassdefself.inherited(subclass)super#workwithsubclass'nameendendklass=Class.new(MySuperclass)dodefself.name'FooBar'endendklass#name仍将是nil什么时候MySuperclass.inheri
我正在尝试为inherited_resourcesController编写规范。我决定使用rspec的mock_model模拟所有与数据库的集成。不幸的是,我无法为创建和更新操作编写规范,因为我收到以下错误:https://gist.github.com/936947有人可以帮我解决这个问题吗? 最佳答案 我在使用flexmock时遇到了同样的问题。原因是它没有使用update_attributes方法来做出路由决策。它检查resource.errors以查看它是否为空。因此,为了让它正确响应,我们还需要模拟errors方法。这是l
我对Rails关系有疑问。我有他的继承版本的基本模型classUser接下来我有一个多态关联的成员模型classMembership当我尝试创建成员资格模型的新实例时,例如键入Membership.newgroup:Group.first,membershipable:Admin.firstmembershipable_type设置为“User”而不是“Admin”。所以我创建了before_validation回调defproper_sti_typeself.membershipable_type=memebrshipable.class.nameend它有效,但我想这是更好的方法。
我正在使用inherited_resources并且我有一个像这样的Controller:classAdmin::PostsController在我的Controller测试中:it"redirectstothepost"dopost=Post.create!valid_attributesput:update,{:id=>post.to_param,:post=>valid_attributes},valid_sessionresponse.shouldredirect_to([:admin,post])end我收到这个错误:undefinedmethod`posts_url'for
我希望将以下模块包含在我拥有的类中:moduleInheritanceEnumeratordefself.included(klass)klass.instance_evaldoinstance_variable_set('@subclasses',[])defself.subclasses@subclassesendoriginal_method=self.respond_to?(:inherited)?self.public_method(:inherited):nilinstance_variable_set('@original_inherited_method',origin