小编And*_*art的帖子

在查询的位置查找nil has_one关联

这可能是一个简单的问题,但我似乎正在拔头发找到一个优雅的解决方案.我有两个ActiveRecord模型类,它们之间有一个has_one和belongs_to关联:

class Item < ActiveRecord::Base
  has_one :purchase
end

class Purchase < ActiveRecord::Base
  belongs_to :item
end
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种优雅的方法来查找所有Item对象,这些对象没有与它们关联的购买对象,理想情况下不需要is_purchased在Item上使用布尔值或类似属性.

现在我有:

purchases = Purchase.all
Item.where('id not in (?)', purchases.map(&:item_id))
Run Code Online (Sandbox Code Playgroud)

哪个有效,但对我来说似乎效率低下,因为它正在执行两个查询(并且购买可能是一个巨大的记录集).

运行Rails 3.1.0

ruby activerecord ruby-on-rails

38
推荐指数
4
解决办法
1万
查看次数

UITextField rightViewMode奇怪的行为

我将自定义清除按钮(UIButton)添加到UITextField作为rightView,但是我发现viewMode上有一些奇怪的行为.尽管设置了视图模式,但它似乎不像普通的清除按钮那样显示.示例代码如下:

UITextField *f = [[[UITextField alloc] init] autorelease];
f.frame = CGRectMake(0, 0, 300, 44);
f.backgroundColor = [UIColor clearColor];
f.textColor = [UIColor whiteColor];

f.clearButtonMode = UITextFieldViewModeNever;

UIImage *image = [UIImage imageNamed:@"Image.png"];

UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom];
b.frame = CGRectMake(0, 0, image.size.width, image.size.height);
[b setImage:image forState:UIControlStateNormal];

f.rightView = b;
f.rightViewMode = UITextFieldViewModeWhileEditing;
Run Code Online (Sandbox Code Playgroud)

该按钮在以下状态下正确显示:

  • 显示聚焦时没有文字
  • 在聚焦和打字时显示
  • 没有焦点时隐藏

但是,如果文本字段已有内容,并且您将焦点切换到它,则不会显示清除按钮.要让它再次显示,您必须删除所有文本,并来回切换焦点.

我还没有找到任何有这个问题的人,所以一直在这个问题上摸不着头脑.任何光线都非常受欢迎.

cocoa-touch objective-c uikit ios

11
推荐指数
1
解决办法
3692
查看次数