在活动记录中有一个名为find_or_create_by的方便动态属性:
Model.find_or_create_by_<attribute>(:<attribute> => "")
但是,如果我需要通过多个属性find_or_create呢?
假设我有一个模型来处理Group和Member之间的M:M关系,称为GroupMember.我可以有很多实例,其中member_id = 4,但我不想要多于一次的实例,其中member_id = 4和group_id = 7.我正在试图弄清楚是否可以这样做:
GroupMember.find_or_create(:member_id => 4, :group_id => 7)
Run Code Online (Sandbox Code Playgroud)
我意识到可能有更好的方法来处理这个问题,但我喜欢find_or_create这个想法的便利性.
activerecord many-to-many model ruby-on-rails dynamic-attributes
我正在通过带有Rails(Rails 3 beta 3)的Mongoid Ruby gem学习MongoDB,我正试图想出一种基于另一个模型的字段在模型上创建动态属性的方法,我认为这是一种模式 - 少数据库将是一个不错的选择.
例如,我有模型:
class Account
include Mongoid::Document
field :name, :type => String
field :token, :type => String
field :info_needed, :type => Array
embeds_many :members
end
class Member
include Mongoid::Document
embedded_in :account, :inverse_of => :members
end
Run Code Online (Sandbox Code Playgroud)
我希望获取Account模型的"info_needed"属性,并根据内部的内容在Member模型上创建动态属性.如果club.info_needed是["first_name","last_name"],我正在尝试创建一个将first_name和last_name属性保存到Member模型的表单.
但是,在练习时,我只是在尝试执行此操作时不断在成员模型上获得"undefined method first_name ="错误.我知道MongoDB可以处理每个记录的动态属性,但是如何在没有未定义的方法错误的情况下让Mongoid执行此操作?
一个有点无趣,最佳实践的问题.我object.__dict__[some_key]根据习惯动态查找对象属性值.现在我想知道哪个更好/更快:我目前的习惯还是getattr(object,some_key).如果一个更好,为什么?
>>> class SomeObject:
... pass
...
>>> so = SomeObject()
>>> so.name = 'an_object'
>>> getattr(so,'name')
'an_object'
>>> so.__dict__['name']
'an_object'
Run Code Online (Sandbox Code Playgroud) 有没有办法将col设置为动态或以某种方式将其转换为有效属性?它目前正在抛出错误:未定义的方法`col ='表示#...
def copy_stock_data_from_sandbox(cntrlr)
source_table = cntrlr.singularize.classify.constantize
dest_table = source_table.new
source_table.column_names.each do |col|
dest_table.col = xyz # <------ This is the line in question
end
dest_table.save
end
Run Code Online (Sandbox Code Playgroud)
此外,不确定标题是否准确,请建议"动态属性"是否适用于这种情况.谢谢
我有一个具有多个日期属性的模型.我希望能够设置和获取值作为字符串.我过度使用其中一个方法(bill_date),如下所示:
def bill_date_human
date = self.bill_date || Date.today
date.strftime('%b %d, %Y')
end
def bill_date_human=(date_string)
self.bill_date = Date.strptime(date_string, '%b %d, %Y')
end
Run Code Online (Sandbox Code Playgroud)
这对我的需求很有帮助,但我想对其他几个日期属性做同样的事情...我如何利用方法缺失,以便可以设置/得到任何日期属性?
activerecord overriding ruby-on-rails method-missing dynamic-attributes
所以根据我的JSP参考书,以及我可以在网上找到的所有其他参考,我应该能够做类似的事情:
<%@ tag dynamic-attributes="dynamicAttributesVar" %>
Run Code Online (Sandbox Code Playgroud)
然后当有人使用我没有在属性指令中定义的属性时,我应该能够从"dynamicAttributesVar"映射访问该属性:
<%= dynamicAttributesVar.get("someUnexpectedAttribute") %>
Run Code Online (Sandbox Code Playgroud)
但是,这根本不起作用; 我尝试时只得到"dynamicAttributesVar无法解析"错误.
现在,我确实发现(通过查看生成的标记的Java类),我可以通过执行以下操作来"破解"正在运行的动态属性变量:
<% Map dynamicAttributesVar = _jspx_dynamic_attrs; %>
Run Code Online (Sandbox Code Playgroud)
现在,除非我在tag指令中使用dynamic-attributes参数,否则该hack不起作用,所以看起来该参数正在做某事.
但我想知道的是,我怎样才能让它为其他每个JSP用户做它做的事情呢?
我知道可以使用动态加载图像
$("#id").attr("src","path of the image"),
Run Code Online (Sandbox Code Playgroud)
但要在特定事件上载入特定图像,
$("id").attr("src","")
Run Code Online (Sandbox Code Playgroud)
不起作用.
使用jquery卸载映像运行时的正确方法是什么?
我无法更改图像的显示或可见性属性,我需要加载它卸载它.
activerecord ×2
getattr ×1
java ×1
jquery ×1
jsp ×1
many-to-many ×1
model ×1
mongodb ×1
mongoid ×1
overriding ×1
performance ×1
python ×1
ruby ×1
tags ×1