2014-03-04 27 views
0

我想要存储url的,但提取基本url并将其存储在自己的不同表中。rails 4我应该使用回拨过滤器还是关注这个

网址:example.com/this-is-worth-saving
基地网址:example.com

URL表:

+----+-----+-------------+ 
| id | url | base_url_id | 
+----+-----+-------------+ 

BASE_URL表:

+----+----------+ 
| id | base_url | 
+----+----------+ 

我应该使用在轨before_create回调来检查,看看是否base_urlbase_url表已经存在,并且
如果它然后抓住id,并将其放置在url的表base_url_id
别人创造新纪录抓住id

是否有更好的解决方案或模式设计也许。

我听到很多反对在rails(4)中使用回调过滤器的论据。

基本上我想要base_url_id

回答

0

回调是Rails世界的一个巨大争论。我喜欢它们,但是我也只在绝对必要时才使用它们。在这种情况下,我认为你不需要回调。

我建议你的“BASE_URL”表使用find_or_create_by! ...假设你的表称为BaseUrl,你可以这样做:

@base_url = BaseUrl.find_or_create_by!(:base_url => params[:base_url])

再次,这是假定你的表的名称是BaseUrl并且您使用包含密钥base_url的传入参数。你想修改上面的代码以适合你的需求,但我认为find_or_create_by!是你想要的,因为这将会:

a。用base_url或 b返回现有记录。用base_url创建一条新记录。

相关问题